Don’t force caller to do validation
checked exception: documenting in your code what exceptions can be thrown - violates open/close, creates too much clutter
if an api is providing more functionality/exceptions than you need, wrap it
Don’t execute normal code in catch statements; avoid/surpress exceptions by having the invoked method return a valid Special Case object providing the expected result
Throw an exception or return a Special Case object if possible
assertions / argument validation passes on the problem; nulls proliferate